package jannex.query;

import jannex.query.conditional.Predicate;

public abstract class SelectClause<E> extends Clause<E> {

    public SelectClause(Binding<E> binding) {
        super(binding);
    }

    public SelectClause() {
    }

    public Where<E> where(E e) {
        return new Where<>(binding, e);
    }

    public Where<E> where(Predicate... predicates) {
        return new Where<>(binding);
    }

    public From<E> from(Table... tables) {
        return new From<>(binding, tables);
    }

    public From<E> from(String tableName, String alias) {
        return new From<>(binding, tableName, alias);
    }

    public From<E> from(String tableName) {
        return new From<>(binding, tableName, null);
    }

    public Select<E> from(Select<?> select) {
        throw new UnsupportedOperationException();
    }

    public OrderBy<E> orderBy(String... columnNames) {
        return null;
//        return new OrderBy<>(binding(), columnNames);
    }

    public GroupBy<E> groupBy(String... columnNames) {
        return new GroupBy<>(columnNames);
    }
}
